import { request } from '@umijs/max';
import { setAuthHeader } from '@/utils/authInterceptor';

/**
 * 获取系统概览数据
 * @returns 系统概览数据
 */
export async function getSystemOverview() {
  const headers: Record<string, string> = {
    'Content-Type': 'application/json',
  };
  
  // 添加认证头
  setAuthHeader(headers);
  
  return request('/api/dashboard/system-overview', {
    method: 'GET',
    headers,
  });
}

/**
 * 获取物资库存概况
 * @returns 物资库存概况数据
 */
export async function getMaterialOverview() {
  const headers: Record<string, string> = {
    'Content-Type': 'application/json',
  };
  
  // 添加认证头
  setAuthHeader(headers);
  
  return request('/api/dashboard/material-overview', {
    method: 'GET',
    headers,
  });
}

/**
 * 获取用户活跃度数据
 * @param period 统计周期：day(今日)、week(本周)、month(本月)、year(年度)，默认为month
 * @returns 用户活跃度数据
 */
export async function getUserActivity(period?: string) {
  const headers: Record<string, string> = {
    'Content-Type': 'application/json',
  };
  
  // 添加认证头
  setAuthHeader(headers);
  
  return request('/api/dashboard/user-activity', {
    method: 'GET',
    headers,
    params: { period },
  });
}

/**
 * 获取物资分类占比
 * @returns 物资分类占比数据
 */
export async function getMaterialCategoryRatio() {
  const headers: Record<string, string> = {
    'Content-Type': 'application/json',
  };
  
  // 添加认证头
  setAuthHeader(headers);
  
  return request('/api/dashboard/category-ratio', {
    method: 'GET',
    headers,
  });
}

/**
 * 获取物资库存趋势
 * @param period 统计周期：week(近一周)、month(近一月)、quarter(近三月)、year(近一年)，默认为month
 * @param categoryId 物资分类ID，不传则统计所有分类
 * @returns 物资库存趋势数据
 */
export async function getMaterialInventoryTrend(period?: string, days?: number) {
  const headers: Record<string, string> = {
    'Content-Type': 'application/json',
  };
  
  // 添加认证头
  setAuthHeader(headers);
  
  return request('/api/dashboard/material-stock-trend', {
    method: 'GET',
    headers,
    params: { period, days },
  });
}

/**
 * 获取物资使用频率排行
 * @param limit 返回记录数量限制，默认为10
 * @param period 统计周期：week(近一周)、month(近一月)、quarter(近三月)、year(近一年)，默认为month
 * @returns 物资使用频率排行数据
 */
export async function getMaterialUsageRanking(limit?: number, period?: string) {
  const headers: Record<string, string> = {
    'Content-Type': 'application/json',
  };
  
  // 添加认证头
  setAuthHeader(headers);
  
  return request('/api/dashboard/material-usage-ranking', {
    method: 'GET',
    headers,
    params: { limit, period },
  });
}

/**
 * 获取库存预警物资
 * @param limit 返回记录数量限制，默认为10
 * @returns 库存预警物资数据
 */
export async function getLowStockMaterials(limit?: number) {
  const headers: Record<string, string> = {
    'Content-Type': 'application/json',
  };
  
  // 添加认证头
  setAuthHeader(headers);
  
  return request('/api/dashboard/low-stock-materials', {
    method: 'GET',
    headers,
    params: { limit },
  });
}

/**
 * 获取跳闸记录统计
 * @param period 统计周期：week(近一周)、month(近一月)、quarter(近三月)、year(近一年)，默认为month
 * @returns 跳闸记录统计数据
 */
export async function getTrippingStats(period?: string) {
  const headers: Record<string, string> = {
    'Content-Type': 'application/json',
  };
  
  // 添加认证头
  setAuthHeader(headers);
  
  return request('/api/dashboard/tripping-stats', {
    method: 'GET',
    headers,
    params: { period },
  });
}

/**
 * 获取跳闸功率分布
 * @returns 跳闸功率分布数据
 */
export async function getTrippingPowerDistribution() {
  const headers: Record<string, string> = {
    'Content-Type': 'application/json',
  };
  
  // 添加认证头
  setAuthHeader(headers);
  
  return request('/api/dashboard/power-distribution', {
    method: 'GET',
    headers,
  });
}

/**
 * 获取跳闸时间分布
 * @param type 分布类型：hourly(按小时)、daily(按日)、weekly(按周)、monthly(按月)，默认为hourly
 * @param period 统计周期：week(近一周)、month(近一月)、quarter(近三月)、year(近一年)，默认为month
 * @returns 跳闸时间分布数据
 */
export async function getTrippingTimeDistribution(type?: string, period?: string) {
  const headers: Record<string, string> = {
    'Content-Type': 'application/json',
  };
  
  // 添加认证头
  setAuthHeader(headers);
  
  return request('/api/dashboard/time-distribution', {
    method: 'GET',
    headers,
    params: { type, period },
  });
}

/**
 * 获取班级跳闸排行
 * @param limit 返回记录数量限制，默认为10
 * @param period 统计周期：week(近一周)、month(近一月)、quarter(近三月)、year(近一年)，默认为month
 * @returns 班级跳闸排行数据
 */
export async function getClassTrippingRanking(limit?: number, period?: string) {
  const headers: Record<string, string> = {
    'Content-Type': 'application/json',
  };
  
  // 添加认证头
  setAuthHeader(headers);
  
  return request('/api/dashboard/class-ranking', {
    method: 'GET',
    headers,
    params: { limit, period },
  });
}

/**
 * 获取用户登录统计
 * @param period 统计周期：week(近一周)、month(近一月)、quarter(近三月)、year(近一年)，默认为month
 * @returns 用户登录统计数据
 */
export async function getUserLoginStats(period?: string) {
  const headers: Record<string, string> = {
    'Content-Type': 'application/json',
  };
  
  // 添加认证头
  setAuthHeader(headers);
  
  return request('/api/dashboard/login-stats', {
    method: 'GET',
    headers,
    params: { period },
  });
}

/**
 * 获取用户操作分布
 * @param period 统计周期：week(近一周)、month(近一月)、quarter(近三月)、year(近一年)，默认为month
 * @returns 用户操作分布数据
 */
export async function getUserOperationDistribution(period?: string) {
  const headers: Record<string, string> = {
    'Content-Type': 'application/json',
  };
  
  // 添加认证头
  setAuthHeader(headers);
  
  return request('/api/dashboard/operation-distribution', {
    method: 'GET',
    headers,
    params: { period },
  });
}